#include<iostream>
#include<vector>

using namespace std;

vector<int> getNext(string t) {
    vector<int> next(t.size(), 0);
    for(int i=1, j=0; i<t.size(); i++) {
        while(j > 0 && t[i] != t[j])    j = next[j-1];
        if(t[i] == t[j])    j++;
        next[i] = j;
    }
    return next;
}

int main() {
    string s, t;
    cin >> s >> t;
    vector<int> next(t.size(), 0);
    next = getNext(t);
    for(int i=0, j=0; i<s.size(); i++) {
        while(j > 0 && s[i] != t[j])    j = next[j-1];
        if(s[i] == t[j])    j++;
        if(j == t.size()) {
            cout << i - j + 2 << endl;
            j = next[j-1];
        }
    }
    for(int i=0; i<next.size(); i++) {
        cout << next[i] << " ";
    }
    cout << endl;
    return 0;
} 